var express = require('express');
var ObjectId = require('mongodb').ObjectId
var model = require('./sqlhelper');  // 引入连接数据库方法
const userModel = {
    getUserInfo(data, callback) {
        model.connect(function (db, client) {  // 连接数据库
            // 进入users库,寻找data这个数据.toArray转换成数组
            db.collection('users').find({ openid: data.openid }).toArray(function (err, docs) {
                // 如果报错,重新登陆
                if (err) {
                    callback(err, '服务器发生错误')
                } else {
                    // 否则校验数据,如果是空数组,说明没找到这个用户,让他去重新登录.找到的话.登陆成功,进入主页面
                    if (docs.length > 0) {
                        // 登陆成功,进行session会话存储(将用户的信息进行存储)
                        // 这样的话,前端每次去请求的时候,先去session里面找username,如果有值,那么证明他是登陆状态的,那么直接跳转登陆页面就好
                        db.collection('users').update({ openid: data.openid }, { $set: { access_token: data.access_token } }, function (err, docs) {
                            db.collection('users').find({ openid: data.openid }).toArray(function (err, docs) {
                                callback(null, docs[0])
                                client.close();  // 每次调用成功,还要再关闭数据库
                            })
                        })
                    } else {
                        // res.redirect('/login');
                        data.date=new Date().getTime()
                        db.collection('users').insert(data, function (err, ret) {
                            db.collection('users').find({ openid: data.openid }).toArray(function (err, docs) {
                                callback(null, docs[0])
                                client.close();  // 每次调用成功,还要再关闭数据库
                            })
                        })
                    }
                }
            })
        })
    },
    userInfo(data, callback) {
        model.connect(function (db, client) {  // 连接数据库
            db.collection('users').update({ '_id':new ObjectId(data.id) }, {
                $set: {
                    avatarUrl: data.avatarUrl || '',
                    city: data.city || '',
                    gender: data.gender || '',
                    nickName: data.nickName || '',
                }
            }, function (err, docs) {
                callback(null, docs[0])
                client.close();  // 每次调用成功,还要再关闭数据库
            })
        })
    }
}
module.exports = userModel;